package ar.com.tesis.mobile.activities;

import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.EditText;
import android.widget.TextView;

import com.daimajia.androidanimations.library.Techniques;
import com.daimajia.androidanimations.library.YoYo;
import com.nineoldandroids.animation.Animator;

import ar.com.tesis.mobile.R;
import ar.com.tesis.mobile.Utils.FuentesUtil;
import ar.com.tesis.mobile.model.Usuario;

public class ActividadRegistracion extends ActividadBasica {

    private TextView botonContinuar;
    private EditText nombreUsuario;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.actividad_registracion);

        this.nombreUsuario = (EditText) findViewById(R.id.nombre_edit_text);
        this.nombreUsuario.addTextChangedListener(watcherNombreDeUsuario);
        this.botonContinuar = (TextView) findViewById(R.id.registracion_guardar);
        this.botonContinuar.setOnClickListener(guardarUsuario);

        configurarFuentes();
        configurarAnimaciones();
    }

    private TextWatcher watcherNombreDeUsuario = new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (count>0){

                mostrarComoVisible(botonContinuar);
            } else {
                ocultarComoInvisible(botonContinuar);
            }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                                      int after) {
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    };

    private View.OnClickListener guardarUsuario = new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (!nombreUsuario.getText().toString().trim().isEmpty()){

                Usuario usuario = new Usuario();
                usuario.setNombre(nombreUsuario.getText().toString().trim());
                usuario.save();

                Intent intent = new Intent(getApplicationContext(), ActividadPuntoDeInteres.class);
                startActivity(intent);
                finish();
            } else{

                mostrarMensaje(getString(R.string.ingrese_usuario_valido));
            }
        }
    };

    private void configurarFuentes(){

        FuentesUtil.aplicarFuente(this, FuentesUtil.Fuente.TREBUCHET_MS_BOLD, (TextView) findViewById(R.id.registracion_bienvenido));
        FuentesUtil.aplicarFuente(this, FuentesUtil.Fuente.TREBUCHET_MS, (TextView) findViewById(R.id.registracion_bienvenido_subtitulo));
        FuentesUtil.aplicarFuente(this, FuentesUtil.Fuente.LATO_BLACK, (TextView) findViewById(R.id.registracion_guardar));
    }

    private void configurarAnimaciones(){

        YoYo.with(Techniques.FadeInUp).duration(1800)
                .withListener(new Animator.AnimatorListener() {
                    @Override
                    public void onAnimationStart(Animator animation) {
                        mostrarComoVisible(findViewById(R.id.registracion_bienvenido));
                    }

                    @Override
                    public void onAnimationEnd(Animator animation) {

                        hacerVisibleLentamente(findViewById(R.id.registracion_bienvenido_subtitulo), Techniques.FadeInUp, 1400);
                        hacerVisibleLentamente(nombreUsuario, Techniques.FadeInUp, 1400);
                        hacerInvisibleLentamente(findViewById(R.id.registracion_bienvenido), 1800);
                    }

                    @Override
                    public void onAnimationCancel(Animator animation) {
                    }

                    @Override
                    public void onAnimationRepeat(Animator animation) {
                    }
                })
                .interpolate(new AccelerateDecelerateInterpolator())
                .playOn(findViewById(R.id.registracion_bienvenido));
    }

    @Override
    public void reintentarCallback() {

    }
}
